import grails.test.*

class ControllerTests extends GrailsUnitTestCase {
    User user
    UserController uc
    protected void setUp() {
        //super.setUp()
        user = new User(userName:'matusz84', firstName:'Mateusz', lastName:'Jancy')
        user.save()
    }

    protected void tearDown() {
        //super.tearDown()
        user.delete()
    }

    void testHandleLogin()
    {
        //ustawiam parametr
        uc.params.userName = user.userName
        //wywoluje akcje
        uc.handleLogin()
        //sprawdzam czy przypisal co mial
        def sessUser = uc.session.user
        //czy nie jest null
        assert sessUser
        //czy id userow sie zgadzaja
        assertEquals("Spodziewane id", user.id, sessUser.id)
        //czy przekierowanie zadzialalo
        assertEquals("/todo", uc.response.redirectedUrl)
    }
    
    void testHandleLoginInvalidUser()
    {
        uc.params.useNme = "INVALID_USER_NAME"
        uc.handleLogin()
        assertEquals "/user/login", uc.response.redirectedUrl
        def message = uc.flash.message
        assert message
        assert message.startsWith("Brak wpisu dla")
    }

    void testLogout()
    {
        uc.session.user = user
        uc.logout()
        def sessionUser = uc.session.user
        assertNull(sessionUser)
        assertEquals "/user/login", uc.response.redirectedUrl
    }
}
